package cn.xsw.utils;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.internal.OSSHeaders;
import com.aliyun.oss.model.*;

public class AliyunOSS {

    public static String providerUpload(FileDTO fd){

        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(fd.getEndpoint(), fd.getAccessKeyId(),fd.getAccessKeySecret());

        // 判断bucketName是否存在
        if(!ossClient.doesBucketExist(fd.getBucketName())){
            // 不存在，就创建
            ossClient.createBucket(fd.getBucketName());
        }

        // 创建PutObjectRequest对象。
        PutObjectRequest putObjectRequest = new PutObjectRequest(fd.getBucketName(),
                fd.getObjectName(), fd.getFile());

        // 如果需要上传时设置存储类型与访问权限，请参考以下示例代码。
         ObjectMetadata metadata = new ObjectMetadata();
         metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());
         metadata.setObjectAcl(CannedAccessControlList.PublicRead);
         putObjectRequest.setMetadata(metadata);

        // 上传文件。
        ossClient.putObject(putObjectRequest);

        //String url = putObjectResult.getETag();

        String url = "https://" + fd.getBucketName() + "." + fd.getEndpoint() + "/" + fd.getObjectName();

        /*// 设置URL过期时间为 10 年。
        Date expiration = new Date(System.currentTimeMillis() + 3600l * 1000 * 24 * 365 * 10);
        // 生成以GET方法访问的签名URL，访客可以直接通过浏览器访问相关内容。
        URL url = ossClient.generatePresignedUrl(fd.getBucketName(),
                fd.getObjectName(), expiration);*/
        // 关闭OSSClient。
        ossClient.shutdown();
        //System.out.println(url);
        return url;
    }

    public static void providerDownload(FileDTO fd){
        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(fd.getEndpoint(), fd.getAccessKeyId(),fd.getAccessKeySecret());

        // 下载OSS文件到本地文件。如果指定的本地文件存在会覆盖，不存在则新建。
        ossClient.getObject(new GetObjectRequest(fd.getBucketName(),
                fd.getObjectName()), fd.getFile());

        // 关闭OSSClient。
        ossClient.shutdown();
    }
}